/**
 * StorageUtils 使用示例
 * 展示如何在手机环境中使用数据标记功能
 */

import { StorageUtils } from './storage.js'

// 示例1：用户访问记录
export const UserVisitTracker = {
    // 记录用户访问
    recordVisit(pageName) {
        const visitData = {
            page: pageName,
            timestamp: new Date().toISOString(),
            userAgent: navigator.userAgent
        }

        // 保存访问记录
        StorageUtils.setData(`visit_${pageName}`, visitData)

        // 更新访问计数
        const visitCount = StorageUtils.getData('total_visits', 0)
        StorageUtils.setData('total_visits', visitCount + 1)

        console.log(`用户访问了 ${pageName}，总访问次数：${visitCount + 1}`)
    },

    // 检查是否首次访问
    isFirstVisit(pageName) {
        const visitData = StorageUtils.getData(`visit_${pageName}`, null)
        return visitData === null
    },

    // 获取访问统计
    getVisitStats() {
        return {
            totalVisits: StorageUtils.getData('total_visits', 0),
            lastVisit: StorageUtils.getData('last_visit_time', null)
        }
    }
}

// 示例2：功能开关管理
export const FeatureFlags = {
    // 设置功能开关
    setFeatureFlag(featureName, enabled) {
        StorageUtils.setData(`feature_${featureName}`, enabled)
    },

    // 检查功能是否启用
    isFeatureEnabled(featureName, defaultValue = false) {
        return StorageUtils.getData(`feature_${featureName}`, defaultValue)
    },

    // 获取所有功能开关
    getAllFeatureFlags() {
        const flags = {}
        // 这里可以遍历所有存储的键来获取功能开关
        // 实际项目中可能需要维护一个功能开关列表
        return flags
    }
}

// 示例3：用户偏好设置
export const UserPreferences = {
    // 保存用户偏好
    savePreference(key, value) {
        StorageUtils.setData(`pref_${key}`, value)
    },

    // 获取用户偏好
    getPreference(key, defaultValue = null) {
        return StorageUtils.getData(`pref_${key}`, defaultValue)
    },

    // 保存主题设置
    setTheme(theme) {
        this.savePreference('theme', theme)
    },

    // 获取主题设置
    getTheme() {
        return this.getPreference('theme', 'light')
    },

    // 保存语言设置
    setLanguage(lang) {
        this.savePreference('language', lang)
    },

    // 获取语言设置
    getLanguage() {
        return this.getPreference('language', 'zh-CN')
    }
}

// 示例4：应用状态管理
export const AppState = {
    // 保存应用状态
    saveState(stateName, stateData) {
        StorageUtils.setData(`state_${stateName}`, {
            data: stateData,
            timestamp: new Date().toISOString()
        })
    },

    // 获取应用状态
    getState(stateName, defaultValue = null) {
        const state = StorageUtils.getData(`state_${stateName}`, null)
        return state ? state.data : defaultValue
    },

    // 检查状态是否过期（超过指定时间）
    isStateExpired(stateName, maxAgeHours = 24) {
        const state = StorageUtils.getData(`state_${stateName}`, null)
        if (!state || !state.timestamp) return true

        const stateTime = new Date(state.timestamp)
        const now = new Date()
        const diffHours = (now - stateTime) / (1000 * 60 * 60)

        return diffHours > maxAgeHours
    }
}

// 示例5：数据缓存管理
export const DataCache = {
    // 缓存数据
    cacheData(key, data, ttlMinutes = 60) {
        const cacheItem = {
            data: data,
            timestamp: new Date().toISOString(),
            ttl: ttlMinutes * 60 * 1000 // 转换为毫秒
        }
        StorageUtils.setData(`cache_${key}`, cacheItem)
    },

    // 获取缓存数据
    getCachedData(key, defaultValue = null) {
        const cacheItem = StorageUtils.getData(`cache_${key}`, null)
        if (!cacheItem) return defaultValue

        // 检查是否过期
        const now = new Date()
        const cacheTime = new Date(cacheItem.timestamp)
        const age = now - cacheTime

        if (age > cacheItem.ttl) {
            // 缓存过期，删除并返回默认值
            StorageUtils.removeData(`cache_${key}`)
            return defaultValue
        }

        return cacheItem.data
    },

    // 清除过期缓存
    clearExpiredCache() {
        // 这里可以实现清理过期缓存的逻辑
        // 需要遍历所有缓存键并检查过期时间
    }
}

// 使用示例：
/*
// 在组件中使用
import { UserVisitTracker, UserPreferences, FeatureFlags } from '@/utils/storage-example.js'

// 记录页面访问
UserVisitTracker.recordVisit('box7')

// 检查是否首次访问
if (UserVisitTracker.isFirstVisit('box7')) {
    console.log('这是用户首次访问 box7 页面')
    // 显示引导或特殊内容
}

// 保存用户偏好
UserPreferences.setTheme('dark')
UserPreferences.setLanguage('en')

// 检查功能开关
if (FeatureFlags.isFeatureEnabled('new_feature', false)) {
    // 启用新功能
}

// 获取访问统计
const stats = UserVisitTracker.getVisitStats()
console.log('总访问次数：', stats.totalVisits)
*/

